/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.model;

import java.util.Date;

/**
 *
 * @author Caio
 */
public class QuestionarioQualitativo extends Bean {

    private Visita visita;
    private Date dataAtualizacao;
    private AvaliacaoGeral avaliacaoGeral;
    private AvaliacaoInstalacao avaliacaoInstalacao;
    private AvaliacaoNutricional avaliacaoNutricional;
    private AvaliacaoOrganizacional avaliacaoOrganizacional;
    private AvaliacaoReprodutiva avaliacaoReprodutiva;
    private AvaliacaoSanitaria avaliacaoSanitaria;

    public QuestionarioQualitativo() {
        dataAtualizacao = null;
        visita = null;
        avaliacaoGeral = new AvaliacaoGeral();
        avaliacaoInstalacao = new AvaliacaoInstalacao();
        avaliacaoNutricional = new AvaliacaoNutricional();
        avaliacaoOrganizacional = new AvaliacaoOrganizacional();
        avaliacaoReprodutiva = new AvaliacaoReprodutiva();
        avaliacaoSanitaria = new AvaliacaoSanitaria();
    }

    public AvaliacaoGeral getAvaliacaoGeral() {
        return avaliacaoGeral;
    }

    public void setAvaliacaoGeral(AvaliacaoGeral avaliacaoGeral) {
        this.avaliacaoGeral = avaliacaoGeral;
    }

    public AvaliacaoInstalacao getAvaliacaoInstalacao() {
        return avaliacaoInstalacao;
    }

    public void setAvaliacaoInstalacao(AvaliacaoInstalacao avaliacaoInstalacao) {
        this.avaliacaoInstalacao = avaliacaoInstalacao;
    }

    public AvaliacaoNutricional getAvaliacaoNutricional() {
        return avaliacaoNutricional;
    }

    public void setAvaliacaoNutricional(AvaliacaoNutricional avaliacaoNutricional) {
        this.avaliacaoNutricional = avaliacaoNutricional;
    }

    public AvaliacaoOrganizacional getAvaliacaoOrganizacional() {
        return avaliacaoOrganizacional;
    }

    public void setAvaliacaoOrganizacional(AvaliacaoOrganizacional avaliacaoOrganizacional) {
        this.avaliacaoOrganizacional = avaliacaoOrganizacional;
    }

    public AvaliacaoReprodutiva getAvaliacaoReprodutiva() {
        return avaliacaoReprodutiva;
    }

    public void setAvaliacaoReprodutiva(AvaliacaoReprodutiva avaliacaoReprodutiva) {
        this.avaliacaoReprodutiva = avaliacaoReprodutiva;
    }

    public AvaliacaoSanitaria getAvaliacaoSanitaria() {
        return avaliacaoSanitaria;
    }

    public void setAvaliacaoSanitaria(AvaliacaoSanitaria avaliacaoSanitaria) {
        this.avaliacaoSanitaria = avaliacaoSanitaria;
    }

    public Date getDataAtualizacao() {
        return dataAtualizacao;
    }

    public void setDataAtualizacao(Date dataAtualizacao) {
        this.dataAtualizacao = dataAtualizacao;
    }

    public Visita getVisita() {
        return visita;
    }

    public void setVisita(Visita visita) {
        this.visita = visita;
    }

    public Double getRespostaNumericaPorCodigo(String codigo) {
        String r = getRespostaPorCodigo(codigo);
        if (r.equals("Não respondido")) {
            return 0D;
        }
        if (r.equals("Não")) {
            return 1D;
        }
        if (r.equals("Sim")) {
            return 2D;
        }
        if (r.equals("Sim e adequadamente")) {
            return 3D;
        }
        return Double.parseDouble(r);
    }

    public String getRespostaPorCodigo(String codigo) {
        char[] c = codigo.toCharArray();
        switch (c[1]) {
            case 'G':
                switch (c[2]) {
                    case '1':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get1()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }

                    case '2':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get2()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '3':
                        if (avaliacaoGeral != null) {
                            return avaliacaoGeral.get3() == null ? "0" : avaliacaoGeral.get3().toString();
                        } else {
                            return "Não respondido";
                        }
                    case '4':
                        if (avaliacaoGeral != null) {
                            return avaliacaoGeral.get4() == null ? "0" : avaliacaoGeral.get4().toString();
                        } else {
                            return "Não respondido";
                        }
                    case '5':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get5()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '6':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get6()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '7':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get7()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '8':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get8()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '9':
                        if (avaliacaoGeral != null) {
                            switch (avaliacaoGeral.get9()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    default:
                        return "Não encontrado.";
                }

            case 'S':
                switch (c[2]) {
                    case '1':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get1()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }

                    case '2':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get2()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '3':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get3()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '4':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get4()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '5':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get5()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '6':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get6()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '7':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get7()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '8':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get8()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '9':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get9()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '0':
                        if (avaliacaoSanitaria != null) {
                            switch (avaliacaoSanitaria.get10()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    default:
                        return "Não encontrado.";
                }
            case 'R':
                switch (c[2]) {
                    case '1':
                        if (avaliacaoReprodutiva != null) {
                            switch (avaliacaoReprodutiva.get1()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }

                    case '2':
                        if (avaliacaoReprodutiva != null) {
                            switch (avaliacaoReprodutiva.get2()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '3':
                        if (avaliacaoReprodutiva != null) {
                            switch (avaliacaoReprodutiva.get3()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '4':
                        if (avaliacaoReprodutiva != null) {
                            switch (avaliacaoReprodutiva.get4()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    default:
                        return "Não encontrado.";
                }
            case 'I':
                switch (c[2]) {
                    case '1':
                        if (avaliacaoInstalacao != null) {
                            switch (avaliacaoInstalacao.get1()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }

                    case '2':
                        if (avaliacaoInstalacao != null) {
                            switch (avaliacaoInstalacao.get2()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '3':
                        if (avaliacaoInstalacao != null) {
                            switch (avaliacaoInstalacao.get3()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '4':
                        if (avaliacaoInstalacao != null) {
                            switch (avaliacaoInstalacao.get4()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '5':
                        if (avaliacaoInstalacao != null) {
                            switch (avaliacaoInstalacao.get5()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    default:
                        return "Não encontrado.";
                }
            case 'N':
                switch (c[2]) {
                    case '1':
                        if (avaliacaoNutricional != null) {
                            switch (avaliacaoNutricional.get1()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }

                    case '2':
                        if (avaliacaoNutricional != null) {
                            switch (avaliacaoNutricional.get2()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '3':
                        if (avaliacaoNutricional != null) {
                            switch (avaliacaoNutricional.get3()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '4':
                        if (avaliacaoNutricional != null) {
                            switch (avaliacaoNutricional.get4()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    case '5':
                        if (avaliacaoNutricional != null) {
                            switch (avaliacaoNutricional.get5()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    default:
                        return "Não encontrado.";
                }
            case 'O':
                switch (c[2]) {
                    case '1':
                        if (avaliacaoOrganizacional != null) {
                            switch (avaliacaoOrganizacional.get1()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }

                    case '2':
                        if (avaliacaoOrganizacional != null) {
                            switch (avaliacaoOrganizacional.get2()) {
                                case 1:
                                    return "Não";
                                case 2:
                                    return "Sim";
                                case 3:
                                    return "Sim e adequadamente";
                                default:
                                    return "Não respondido";
                            }
                        } else {
                            return "Não respondido";
                        }
                    default:
                        return "Não encontrado.";
                }
            default:
                return "Não encontrado.";
        }
    }

    public String getQuestaoByCodigo(String codigo) {

        String questao = this.getAvaliacaoGeral().getQuestaoByCodigo(codigo);
        if (questao != null) {
            return questao;
        }
        questao = this.getAvaliacaoInstalacao().getQuestaoByCodigo(codigo);
        if (questao != null) {
            return questao;
        }
        questao = this.getAvaliacaoSanitaria().getQuestaoByCodigo(codigo);
        if (questao != null) {
            return questao;
        }
        questao = this.getAvaliacaoNutricional().getQuestaoByCodigo(codigo);
        if (questao != null) {
            return questao;
        }
        questao = this.getAvaliacaoOrganizacional().getQuestaoByCodigo(codigo);
        if (questao != null) {
            return questao;
        }
        questao = this.getAvaliacaoReprodutiva().getQuestaoByCodigo(codigo);
        if (questao != null) {
            return questao;
        }


        return questao;
    }
}
